module.exports = (plop) => {
  // 设置名为 views 的生成器
  plop.setGenerator('views', {
    description: '创建页面模版', // 描述
    // 终端提示
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: '请输入页面名',
        default: 'viewName'
      }
    ],
    // 执行操作
    actions: [
      {
        type: 'add',
        path: 'src/views/{{name}}/index.vue', // /test/demo 表示test嵌套demo
        templateFile: 'plop-templates/views/index.vue.hbs'
      }
    ]
  })
  // 设置名为 components 的生成器
  plop.setGenerator('components', {
    description: '创建组件模版',
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: '请输入组件名',
        default: 'ComponentName'
      }
    ],
    actions: [
      {
        type: 'add',
        path: 'src/components/{{name}}/index.vue',
        templateFile: 'plop-templates/components/index.vue.hbs'
      }
    ]
  })
  // 设置名为 base-ui 的生成器
  plop.setGenerator('base-ui', {
    description: '创建全局通用组件模版',
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: '请输入组件名',
        default: 'component-name'
      }
    ],
    actions: [
      {
        type: 'add',
        path: 'src/base-ui/{{name}}/index.vue',
        templateFile: 'plop-templates/base-ui/index.vue.hbs'
      },
      {
        type: 'add',
        path: 'src/base-ui/{{name}}/types.ts',
        templateFile: 'plop-templates/base-ui/types.ts.hbs'
      },
      {
        type: 'add',
        path: 'src/base-ui/{{name}}/index.md',
        templateFile: 'plop-templates/base-ui/index.md.hbs'
      }
    ]
  })
  // 设置名为 store 的生成器
  plop.setGenerator('store', {
    description: '创建 store 模版',
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: '请输入文件名',
        default: 'storeName'
      }
    ],
    actions: [
      {
        type: 'add',
        path: 'src/store/{{name}}/index.ts',
        templateFile: 'plop-templates/store/index.ts.hbs'
      }
    ]
  })
  // 设置名为 api 的生成器
  plop.setGenerator('api', {
    description: '创建 api 模版',
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: '请输入文件名',
        default: 'apiName'
      }
    ],
    actions: [
      {
        type: 'add',
        path: 'src/service/api/{{name}}/index.ts',
        templateFile: 'plop-templates/api/index.ts.hbs'
      }
    ]
  })
}
